package com.whmall.service.crm.module.companyuser;

import com.whmall.service.crm.entity.dto.companyuser.CompanyUserDetailsRspDTO;
import com.whmall.service.crm.entity.dto.companyuser.CompanyUserKeyFieldRspDTO;
import com.whmall.service.crm.entity.dto.companyuser.CompanyUserListItemRspDTO;
import com.whmall.service.crm.module.companyuser.entity.CompanyUserDO;

import java.util.List;

/**
 * 公司用户仓库
 *
 * @author alex
 * @since 2020/7/31
 */
public interface CompanyUserRepository {
    /**
     * 根据公司ID查找用户列表
     *
     * @param companyId 公司ID
     * @return 公司用户列表
     */
    List<CompanyUserListItemRspDTO> listUserByCompany(Long companyId);

    /**
     * 根据公司ID查找有效用户列表（通用）
     *
     * @param companyId 公司ID
     * @return 公司用户列表
     */
    List<CompanyUserKeyFieldRspDTO> getAvailableCompanyUsers(Long companyId);

    /**
     * 获取公司用户详细信息
     *
     * @param companyId     公司ID
     * @param companyUserId 公司用户ID
     * @return 找到返回对应的公司用户详细信息，否则将返回null
     */
    CompanyUserDetailsRspDTO getDetailsById(Long companyId, Long companyUserId);

    /**
     * 根据公司ID列表查找默认用户
     *
     * @param companyIds 公司ID列表
     * @return 公司默认用户列表，如果传入的公司存在默认用户，则加入返回的列表中，否则将排除
     */
    List<CompanyUserDO> listForDefaultUsersByCompanyIdIn(List<Long> companyIds);
}
